using MediatR;
using S.O.Domain.Dto.Output;
using S.O.ErrorCode;

namespace S.O.Api.Read.Application.Command.Medical
{
    /// <summary>
    /// 获取医疗卡记录列表命令
    /// 用于查询患者的医疗卡办理历史记录
    /// </summary>
    public class GetMedicalCardListCommand : IRequest<APIResult<List<MedicalCardDto>>>
    {
        /// <summary>
        /// 患者ID（可选）
        /// </summary>
        public long? PatientId { get; set; }
        
        /// <summary>
        /// 医疗卡号（可选）
        /// </summary>
        public string? CardNo { get; set; }
        
        /// <summary>
        /// 身份证号（可选）
        /// </summary>
        public string? IdCard { get; set; }
        
        /// <summary>
        /// 患者姓名（可选）
        /// </summary>
        public string? PatientName { get; set; }
        
        /// <summary>
        /// 办卡状态（可选）
        /// </summary>
        public string? CardStatus { get; set; }
        
        /// <summary>
        /// 开始日期（可选）
        /// </summary>
        public DateTime? StartDate { get; set; }
        
        /// <summary>
        /// 结束日期（可选）
        /// </summary>
        public DateTime? EndDate { get; set; }
        
        /// <summary>
        /// 页码（默认第1页）
        /// </summary>
        public int PageIndex { get; set; } = 1;
        
        /// <summary>
        /// 每页大小（默认20条）
        /// </summary>
        public int PageSize { get; set; } = 20;
    }
}